package com.example.word.service;

import com.example.word.dto.UserInfoDTO;
import com.example.word.dto.UserOnlineDTO;
import com.example.word.pojo.UserInfo;
import com.baomidou.mybatisplus.extension.service.IService;
import com.example.word.vo.*;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;

/**
 *
 */
public interface UserInfoService extends IService<UserInfo> {

    /**
     * 修改用户资料
     *
     * @param userInfoVO 用户资料
     */
    void updateUserInfo(UserInfoVO userInfoVO);

    /**
     * 修改用户邮箱
     * @param emailVO 用户绑定邮箱
     */
    void saveUserEmail(EmailVO emailVO);

    /**
     * 修改用户状态
     * @param userStatusVO 用户状态
     */
    void updateUserStatus(UserStatusVO userStatusVO);


    /**
     * 更新用户角色
     *
     * @param userRoleVO 更新用户角色
     */
    void updateUserRole(UserRoleVO userRoleVO);

    /**
     * 批量删除用户
     * @param userInfoIdList 用户id
     */
    void deleteUsers(List<Integer> userInfoIdList);
    /**
     * 修改用户头像
     *
     * @param file 头像图片
     * @return 头像地址
     */
    String updateUserAvatar(MultipartFile file);


    /**
     * 根据id查看用户信息
     * @param userId
     * @return
     */
    UserInfoDTO getUserInfoById(Integer userId);

    /**
     * 查看在线用户列表
     *
     * @param conditionVO 条件
     * @return 在线用户列表
     */
    PageResult<UserOnlineDTO> listOnlineUsers(ConditionVO conditionVO);

    /**
     * 下线用户
     *
     * @param userInfoId 用户信息id
     */
    void removeOnlineUser(Integer userInfoId);

}
